package Tetris.utils;

/** @author Adrian Garcia Rojas
  * @author Aida Ruiz Maya
  * @author Héctor Daniel González Terán
  * @version 1.0 30/12/2010
  * Esta programa es un tetris para el proyecto final de ICC1
  * Profesora de Asignatura: Fernanda Sanchez Puig
  * Ayudante de Laboratorio: Manuel Alcántara Juárez
  */ 

public class Punto2D {
    private int x;
    private int y;

    public Punto2D(){
        this(0,0);
    }
    
    public Punto2D(int x,int y){
        this.x=x;
        this.y=y;
    }
/**
 * Muestra la cordena en x del punto en cuestion con el parametro dado
 * @return x
 */
    public int getX() {
        return x;
    }
/**
 * Cambia el valor de la cordenada en x del punto en cuestion con el parametro dado
 * @param x
 */
    public void setX(int x) {
        this.x = x;
    }
/**
 * Muestra la cordena en y del punto en cuestion con el parametro dado
 * @return y
 */
    public int getY() {
        return y;
    }
/**
 * Cambia el valor de la cordenada en y del punto en cuestion con el parametro dado
 * @param y
 */
    public void setY(int y) {
        this.y = y;
    }
/**
 * Este metodo recibe un objeto que lo compara si es de la clase Punto 2D, si si, este devuelve un booleano de
 * la comparacion de que si la figura se encuentra en la misma posicion dentro del tablero que la que lo mando a llamar
 * @param obj dado el polimorfismo dado aqui no se sabe que tipo de objeto pueda recibir este metodo
 * @return boolean regresa un booleano dependiendo de las comparaciones hechas
 */
    public boolean equals(Object obj){
        if(obj instanceof Punto2D){
            Punto2D aux=(Punto2D)obj;
            return (aux.getX()==getX() && aux.getY()==getY());
        }
        return false;
    }
/**
 * Mueve cada parte de la figura en cuestion en las magnitudes correspondientes dadas por los parametros correspondientes
 * @param dx
 * @param dy
 */
    public void move(int dx,int dy){
        x=x+dx;
        y=y+dy;
    }
/**
 * Crea un nuevo Objeto Punto2D con las nuevas cordenas mas su desplazamiento pasado como parametros respectivamente
 * @param dx
 * @param dy
 * @return Punto2D
 */
    public Punto2D translate(int dx,int dy){
        return new Punto2D(x+dx,y+dy);
    }
/**
 * Clona un objeto de la clase Punto2D
 * @return Punto2D
 */
    public Punto2D clone(){
        return new Punto2D(x, y);
    }
}
